其他
好奇了好久的「对象」,就这?
The following article is from 编程指北 Author 编程指北
面向过程 VS 面向对象
function_a(yyy);
function_b(xxx);
Worker worker = new Woker("小北");
worker.touchFish("5分钟");
worker.coding("1小时");
开始游戏 随机生成食物 绘制画面 接收输入并改变方向 判断是否碰到墙壁和食物等 ...
对象如何实现?
函数指针是啥?
int (*f1)(int); // 传入int,返回int
void (*f2)(char*); //传入char指针,没有返回值
double* (*f3)(int, int); //传递两个整数,返回 double指针
# include
typedef void (*work)() Work; // typedef 定义一种函数指针类型
void xiaobei_work() {
printf("小北工作就是写代码");
}
void shuaibei_work() {
printf("帅北工作就是摸鱼")
}
void do_work(Work worker) {
worker();
}
int main(void)
{
Work x_work = xiaobei_work;
Work s_work = shuaibei_work;
do_work(x_work);
do_work(s_work);
return 0;
}
小北工作就是写代码帅北工作就是摸鱼
void qsort(void* base, size_t num, size_t width, int(*compare)(const void*,const void*))
对象
struct Animal {
char name[20];
void (*eat)(struct Animal* this, char *food); // 成员方法 eat
int (*work)(struct Animal* this); // 成员方法 工作
};
void eat(struct Animal* this, char *food) {
printf("%s 在吃 %s\n", this->name, food);
};
void work(struct Animal* this) {
printf("%s 在工作\n", this->name);
}
struct Animal* Init(const char *name) {
struct Animal *animal = (struct Animal *)malloc(sizeof(struct Animal));
strcpy(animal->name, name);
animal->eat = eat;
animal->work = work;
return animal;
}
int main() {
struct Animal *animal = Init("小狗");
animal->eat(animal, "牛肉");
animal->work(animal);
return 0;
}
小狗在吃牛肉小狗在工作
animal->eat(“牛肉”);
animal->work();
eat(animal, "牛肉");
work(animal);
class Stu:
def __init__(self, name, age):
self.name = name
self.age = age
def displayStu(self):
print "Name : ", self.name, ", Age: ", self.age
class Stu{
public:
void Hello() {
cout << "hello world" << endl;
}
private:
char *name;
int age;
float score;
};
Stu *stu = new Stu;
stu->Hello(); // 正常对象,正常调用
stu = NULL;
stu->Hello() // 虽然 stu 为 NULL,但是依然不会发送运行时错误
stu->Hello(); 等价于Hello(NULL);
void Hello() {
cout << "Hello " << this->name << endl;
}
(完)
推荐阅读:
每日打卡赢积分兑换书籍入口
这样操作后,我们每次新的推送才能第一时间出现在你的订阅列表中~